﻿using Manon.Admin.Web.ApplicationCore.Dtos.Role;
using Manon.Core.IOC;
using Manon.Core.Commons;
using Manon.Repository.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Manon.Admin.Web.ApplicationCore.Interfaces
{
    public interface IRoleService : ISingletonDependency
    {
        /// <summary>
        /// 获取角色分页列表
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<IPagedList<RoleOutput>> GetRolePageList(GetRolePageListInput Input);


        /// <summary>
        /// 获取角色信息
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<RoleOutput> GetRoleById(int RoleId);

        /// <summary>
        /// 保存角色信息
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SaveRole(SaveRoleInput Input);

        /// <summary>
        /// 设置角色是否可用
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> SetEnabled(SetRoleEnabledInput Input);


        /// <summary>
        /// 获取角色简要信息列表
        /// </summary>
        /// <returns></returns>
        Task<List<SimpleRoleOutput>> GetSimpleRoleListAsync();


        /// <summary>
        /// 保存用户角色
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> BandRoles(BandRoleInput Input);

        /// <summary>
        /// 获取用户角色id集合
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<List<string>> GetUserBandRoles(int UserId);

 

        /// <summary>
        /// 获取角色菜单id集合
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<List<string>> GetRoleMenuIds(int RoleId);

 


        /// <summary>
        /// 保存角色菜单
        /// </summary>
        /// <param name="Input"></param>
        /// <returns></returns>
        Task<Result> BandRoleMenus(BandRoleMenusInput Input);
 


        /// <summary>
        /// 获取用户可访问的页面
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        Task<List<string>> GetUserMenuIds();

        /// <summary>
        /// 获取用户可访问的页面按钮
        /// </summary>
        /// <param name="UserId"></param>
        /// <returns></returns>
        Task<List<string>> GetUserMenuButtonIds();

    }
}
